<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <!-- 闭包就是能过读取其他函数内部 变量的函数
    由于在js语言中，只有函数内部的子函数才能够读取局部变量
    因此可以把闭包简单的理解成定义在一个函数内部的函数
    所以，本质上，闭包就是将函数内部和函数外部连接起来的一座桥梁
    闭包的比较多的原因是： 可以保护函数内部的代码尤其是变量
    闭包在很多的框架和库中用的比较多也是最优的解决方案比较安全
    闭包问比较多的原因就是 可以保护 函数函数的代码 尤其是变量
    闭包在很多框架和库中用的都相当多 也是最优的解决方案 比较安全
    闭包 是一种结构
    什么是闭包：
    闭包的模式： 函数模式的闭包 对象模式的闭包
    闭包的作用： 缓存数据，延长作用域
    闭包优点和缺点： 缓存数据即是优点也是缺点，把数据缓存下下来可以继续用，但是如果你一直不释放这个数据，内存就会爆掉，所以一定要有结束条件
    -->
    <!-- 函数模式的闭包： -->
<script>
    // function fn() {
    //     var num = 10;
    //     return function () {
    //         return num;
    //     }
    // }
    // var ff = fn();
    // console.log(ff()); -->
    // 对象模式的闭包：
    function fn() {
        var num = 10;
        return {
            age: num,
        }
    }
    var obj = fn();
    console.log(obj.age);
    </script>
</body>
</html>